package twoD.IsoPfem;

import inf.jlinalg.IMatrix;
import inf.jlinalg.IVector;

import java.util.ArrayList;

public interface IStructure {

	Mesh getMesh();

	IElement getElements(int i);

	IElement getElements(IGeometry g);

	ArrayList<IElement> getElements();

	int getNumberOfElements();

	int enumerateDOFs();

	void assembleInternalForceVector(double[] riGlobal);

	void assembleExternalForceVector(double[] rGlobal);

	void assembleTangentStiffnessMatrix(IMatrix kGlobal, boolean full);

	void setDisplacement(double[] uGlobal);

	void updateInternalState();

	void updateGlobalState();

	void solveStaticEquilibrium();

	void solveStaticEquilibrium(double lambda);

	IVector getUGlobal();

	IVector getXGlobal();

	double[] getU();

}
